package com.qianfeng.zhangwei.camera.utils;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @说 明：
 * @项目名称：Sz1504Adv
 * @包 名： com.qianfeng.zhangwei.camera.utils
 * @类 名： ImageUtils
 * @创 建人： zhangwei
 * @创建时间：2015-08-06 22:09
 * @版 本：v1.0
 * @修 改人：
 * @修改时间：
 * @修改备注：
 */
public class ImageUtils {
    /**
     * 用于图片上传
     * 图片压缩 质量压缩
     * 图片文件大小压缩  但  加载进内存的 大小不变
     *
     * @param bitmap
     * @param file
     */
    public static void compressToFile(Bitmap bitmap, File file) throws IOException {
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        int options = 80; //  压缩30%
        bitmap.compress(Bitmap.CompressFormat.JPEG, options, bout);
        while (bout.toByteArray().length / 1024 > 100) {
            bout.reset();
            options -= 10;
            bitmap.compress(Bitmap.CompressFormat.JPEG, options, bout);
        }
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        fileOutputStream.write(bout.toByteArray());
        fileOutputStream.flush();
        fileOutputStream.close();
    }

    /**
     * File 类型  二进制数据 .png
     * Bitmap
     * 图片二次采样
     *
     * @return
     */
    public static Bitmap compressImageFromFile(String path, int maxWidth, int maxHeight) {
        //实例化采样核心类
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;//处理图片不加载进内存
        BitmapFactory.decodeFile(path, options);
        //获取图片的真实高跟宽
        int width = options.outWidth;
        int height = options.outHeight;
        int inSmapleSize = 1;
        while (width / inSmapleSize > maxWidth || height / inSmapleSize > maxHeight) {
            inSmapleSize *= 2;
        }
        options.inSampleSize = inSmapleSize;
        options.inJustDecodeBounds = false;
        return BitmapFactory.decodeFile(path, options);
    }
}
